﻿Imports lbGlobalcom
Public Class fPrepacksOld
    'Dim cDetLis As lbGlobalcom.cDetalleListaPrecios
    'Dim cListaP As lbGlobalcom.cEncaListaPrecios
    Dim dtPadres As New lbGlobalcom.dsMovimiento.MOV_DESCRIPCIONDETDataTable
    Dim dtHijos As New lbGlobalcom.dsMovimiento.MOV_DESCRIPCIONDETDataTable
    Dim cPro As lbGlobalcom.cProducto
    Private Sub fPrepacks_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            'cListaP = New cEncaListaPrecios("001")
            'lbGlobalcom.cGeneral.ActivaControles(Me.Controls, False)
            Me.btnNuevo.Enabled = True
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub ActualizaDatosProd(ByVal Fila As Integer)
        Try
            If dgvMovimiento.CurrentRow IsNot Nothing Then
                dgvMovimiento.Rows(Fila).Cells(4).Value = cPro.Contenido
            Else
                stMovimi.Text = ""
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub dgvMovimiento_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dgvMovimiento.KeyDown
        Try
            If e.Control Then
                Select Case e.KeyCode
                    Case Keys.B
                        If dgvMovimiento.CurrentCellAddress.X = 1 Then
                            Dim fLProd As New fListaProductos
                            'fLProd.ListaPrecios = "001"
                            If fLProd.ShowDialog = Windows.Forms.DialogResult.OK Then
                                dgvMovimiento.Rows(dgvMovimiento.CurrentRow.Index).Cells(1).Value = fLProd.idArticulo
                                cPro = New cProducto(fLProd.idArticulo)
                                'cDetLis = cListaP.DetalleLista(fLProd.idArticulo)
                                ActualizaDatosProd(dgvMovimiento.CurrentCellAddress.Y)
                                stMovimi.Text = "PRODUCTO: " & cPro.Descripcion & " UNIDAD: " & cPro.Unidad & " CONTENIDO: " & cPro.Contenido
                            End If
                        End If
                End Select
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub dgvDetalle_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles dgvDetalle.CellBeginEdit
        Try
            asignarLinea(e.RowIndex)
            If e.RowIndex + 1 > dgvMovimiento.CurrentRow.Cells("CANTIDAD").Value * cPro.CantidadSubProd Then
                e.Cancel = True
                MessageBox.Show("Supero el tope de registro de IMEI e ICCID para esta linea", "Supero el Tope", MessageBoxButtons.OK, MessageBoxIcon.Information)
                dgvDetalle.CancelEdit()
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Function EsConsecIgual() As Boolean
        Dim EsIgual As Boolean = False
        If dgvDetalle.RowCount < cPro.CantidadSubProd Then
            Return True
        Else
            Dim i As Int16 = dgvDetalle.RowCount - 2
            Dim j As Int16 = 1
            Dim nCosec As Integer = dgvDetalle.Rows(i).Cells("NUMEROPRODUCTO").Value
            While j < cPro.CantidadSubProd
                i -= 1
                j += 1
                If dgvDetalle.Rows(i).Cells("NUMEROPRODUCTO").Value <> nCosec Then
                    EsIgual = False
                    j = cPro.CantidadSubProd
                End If
            End While
            Return EsIgual
        End If
    End Function

    Private Sub asignarLinea(ByVal Fila As Integer)
        dgvDetalle.Rows(Fila).Cells("TIPOSUBPROD").Value = cPro.TipoSubProd
        If Fila = 0 Then
            dgvDetalle.Rows(Fila).Cells("NUMEROPRODUCTO").Value = 1
        Else
            If EsConsecIgual() Then
                dgvDetalle.Rows(Fila).Cells("NUMEROPRODUCTO").Value = dgvDetalle.Rows(Fila - 1).Cells("NUMEROPRODUCTO").Value
            Else
                dgvDetalle.Rows(Fila).Cells("NUMEROPRODUCTO").Value = dgvDetalle.Rows(Fila - 1).Cells("NUMEROPRODUCTO").Value + 1
            End If
        End If

        'MOV_DESCRIPCIONDETDataGridView.Rows(Fila).Cells("TIPOSUBPROD").Value = cDetLis.iProducto.TipoSubProd
        'If Fila = 0 Then
        '    MOV_DESCRIPCIONDETDataGridView.Rows(Fila).Cells("NUMEROPRODUCTO").Value = 
        'Else
        '    If EsConsecIgual() Then
        '        MOV_DESCRIPCIONDETDataGridView.Rows(Fila).Cells("NUMEROPRODUCTO").Value = MOV_DESCRIPCIONDETDataGridView.Rows(Fila - 1).Cells("NUMEROPRODUCTO").Value
        '    Else
        '        MOV_DESCRIPCIONDETDataGridView.Rows(Fila).Cells("NUMEROPRODUCTO").Value = MOV_DESCRIPCIONDETDataGridView.Rows(Fila - 1).Cells("NUMEROPRODUCTO").Value + 1
        '    End If
        'End If
    End Sub

    Private Function GetConsecActual() As Integer
        If dgvDetalle.RowCount = 0 Then
            Return 1
        Else
            Return dgvDetalle.Rows(dgvDetalle.RowCount - 1).Cells("NUMEROPRODUCTO").Value
        End If
    End Function

    Private Function GetNumeroFilasDescripDetalle() As Integer
        Dim Nfilas As Integer = 0

        For Each drDescDet In dgvDetalle.Rows
            If drDescDet IsNot Nothing Then _
                Nfilas += 1
        Next
        Return Nfilas
    End Function

    Private Sub ValidarRegistroDescDetalle()
        Dim NFilas As Integer = GetNumeroFilasDescripDetalle()
        If Not dgvMovimiento.CurrentRow.IsNewRow AndAlso dgvMovimiento.CurrentRow.Cells("CANTIDAD").Value IsNot DBNull.Value Then
            If cPro.CantidadSubProd * dgvMovimiento.CurrentRow.Cells("CANTIDAD").Value > NFilas Then
                txtNumeroRegistro.Enabled = True
            Else
                txtNumeroRegistro.Enabled = False
            End If
        End If
    End Sub

    Private Sub txtNumeroRegistro_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtNumeroRegistro.Validating
        Try
            If txtNumeroRegistro.Text.Trim.Length > 0 Then
                Dim ConsecAsigna As Integer = GetConsecActual()
                If txtConsecutivo.Text = txtContenido.Text Then
                    ConsecAsigna += 1
                    txtConsecutivo.Text = 1
                Else
                    txtConsecutivo.Text += 1
                End If

                Dim drDescDet As lbGlobalcom.dsMovimiento.MOV_DESCRIPCIONDETRow = dtPadres.NewRow
                'drDescDet.SetParentRow(drMovDetalle, dsMovimiento.Relations("FK_MOV_MOVIMIENTODETALLE_MOV_DESCRIPCIONDET"))
                drDescDet.IDDOCUMENTO = "PRE"
                drDescDet.NUMERO = 1
                drDescDet.NUMEROLINEA = dgvMovimiento.Rows(dgvMovimiento.CurrentRow.Index).Cells(0).Value
                drDescDet.NUMEROPRODUCTO = ConsecAsigna
                drDescDet.IDPRODUCTO = dgvMovimiento.Rows(dgvMovimiento.CurrentRow.Index).Cells(1).Value
                drDescDet.TIPOSUBPROD = cPro.TipoSubProd
                drDescDet.NUMEROREGISTRO = txtNumeroRegistro.Text
                drDescDet.COSTO = 0 'drMovDetalle.VALORBASE * (1 - drMovDetalle.DESCUENTO1) * (1 - drMovDetalle.DESCUENTO2)
                dtPadres.Rows().Add(drDescDet)
                dgvDetalle.DataSource = dtPadres.Rows
                drDescDet = Nothing
                'drMovDetalle = Nothing
                txtIngresados.Text = GetNumeroFilasDescripDetalle()
                txtNumeroRegistro.Text = ""
                txtNumeroRegistro.Focus()
            End If
            ValidarRegistroDescDetalle()
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    Private Sub InicializaConsec()
        Dim NFilas As Integer = GetNumeroFilasDescripDetalle()
        txtIngresados.Text = NFilas
        If NFilas = 0 Then
            txtConsecutivo.Text = 0
        ElseIf NFilas <= cPro.CantidadSubProd Then
            txtConsecutivo.Text = NFilas
        Else
            Dim FilaActual As Integer = NFilas - 1
            Dim Salir = False
            Dim NregCosecIguales As Integer = 0
            Dim nConsec As Integer = dgvDetalle.Rows(FilaActual).Cells("NUMEROPRODUCTO").Value
            While Not Salir
                If dgvDetalle.Rows(FilaActual).Cells("NUMEROPRODUCTO").Value <> nConsec Or NregCosecIguales = cPro.CantidadSubProd Then
                    Salir = True
                Else
                    FilaActual -= 1
                    NregCosecIguales += 1
                End If
            End While
            txtConsecutivo.Text = NregCosecIguales
        End If
    End Sub


    Private Sub dgvMovimiento_RowEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvMovimiento.RowEnter
        Try
            If e.RowIndex >= 0 AndAlso dgvMovimiento.Rows(e.RowIndex).Cells(1).Value IsNot DBNull.Value AndAlso dgvMovimiento.Rows(e.RowIndex).Cells(1).Value IsNot Nothing Then
                'cDetLis = cListaP.DetalleLista(dgvDetalle.Rows(e.RowIndex).Cells(3).Value)
                stMovimi.Text = "PRODUCTO: " & cPro.Descripcion & " UNIDAD: " & cPro.Contenido
                'TotalizaDoc()
                txtContenido.Text = cPro.CantidadSubProd
                InicializaConsec()
            Else
                stMovimi.Text = ""
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
End Class